package gossipinator.bt;

import java.io.DataInputStream;
import java.io.DataOutputStream;

/**
 *   Cette classe permet de realiser facilement des tests pendant les communications.
 *   Typiquement, envoyer un entier ou lire une valeur attendue.
 */
public class Handshake {

	 DataOutputStream dos ;
	 DataInputStream dis ;
	 String name ;
	
    /** @param name   Nom de la classe utilisant Handshake, par exemple "Serveur". 
     *  @param dos    Canal de sortie (ecriture)
     *  @param dis    Canal d'entree (lecture)
     */
	 public Handshake(String name, DataOutputStream dos, DataInputStream dis) {
		 this.dos = dos ;
		 this.dis = dis ;
		 this.name = name ;
	 }
	 
    /** Ecrit un entier sur le canal de sortie */
	 public void checkPut(int val) {
		 try {
			 dos.writeInt(val) ;
			 System.out.println("[" + name + "] Send " + val) ;
		 } catch (Exception e) {
			 System.out.println("checkPut exception : " + e) ;
		 }
	 }
	 
    /** Lit un entier sur le canal d'entree et verifie qu'il est egal a l'argument. 
     *  Sinon, une erreur est signalee par un System.out.println
     */
	 public void checkGet(int val) {
		 try {
			 int x = dis.readInt() ;
			 if (x == val) {
				 System.out.println("[" + name + "] " + val + " bien recu" ) ;
			 }
			 else {
				 System.out.println("[" + name + " -- ERREUR] " + x + " recu au lieu de " + val) ;
			 }
		 } catch (Exception e) {
			 System.out.println("checkGet exception : " + e) ;
		 }
	 }
	 
}
